﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LeetCode
{
    /// <summary>
    /// 合并两个有序链表
    /// </summary>
    public class MergeTwoSortedLists :IRun
    {
        public void Run()
        {
            // 将两个有序链表合并为一个新的有序链表并返回。
            // 输入：1->2->4, 1->3->4
            // 输出：1->1->2->3->4->4


            List<int> _Result = Method1(new List<int>() { 1,2, 3, 7, 12, 41 }, new List<int>() { 1,3,4,5, 6, 7, 41, 99 });
        }
        public List<int> Method1(List<int> l1, List<int> l2)
        {
            List<int> _Result = new List<int>();
            while (l1.Count > 0 || l2.Count > 0)
            {
                if (l1.Count == 0 && l2.Count > 0)
                {
                    _Result.AddRange(l2);
                    l2.Clear();
                    break;
                }

                if (l2.Count == 0 && l1.Count > 0)
                {
                    _Result.AddRange(l1);
                    l1.Clear();
                    break;
                }

                if (l1[0] <= l2[0])
                {
                    _Result.Add(l1[0]);
                    l1.RemoveAt(0);
                }
                else
                {
                    _Result.Add(l2[0]);
                    l2.RemoveAt(0);
                }
            }
            return _Result;
        }
    }
}
